from haystack import indexes

from apps.goods.models import SKU
'''
0. 我们需要在模型所对应的子应用中创建 search_indexes.py 文件
1. 索引类必须继承自 haystack.indexes.SearchIndex
2. 索引类必须继承自 haystack.indexes.Indexable
3. 必须定义一个字段，
    字段名惯例为 text ，且 document=True
4. use_template=True 允许我们设置一个文件，来指定对哪些字段进行检索
    这个文件在哪里呢？
    我们需要在应用目录下创建一个 templates 目录
    在 templates 目录下创建一个  search 目录
    在 search 目录下创建一个  子应用名目录
    子应用名目录下创建一个 索引文件名
    索引文件名的格式： 模型类名小写_text.txt
    内容格式：
        {{ 模型类属性名 }}
    
   即 /templates/search/子应用名/索引文件名
        
5. 索引类的名称可以是 模型类名+Index ，也可以是 模型类名+SearchIndex

'''

class SKUIndex(indexes.SearchIndex, indexes.Indexable):
    
    """SKU索引数据模型类"""
    text = indexes.CharField(document=True, use_template=True)

    def get_model(self):
        """返回建立索引的模型类"""
        return SKU

    def index_queryset(self, using=None):
        """返回要建立索引的数据查询集"""
        return self.get_model().objects.filter(is_launched=True)